/*
    递归完成数组内全元素相加
    递归：将原本问题转换成更小的同类问题，自己调用自己
 */
public class Sum {

    //给客户调用的，求数组的合
    public static int sum(int[] arr){
        return sum(arr, 0); //调用下面的sum方法
    }

    // 计算arr[l...n)这个区间内所有数字的和 这是该类内部调用的
    private static int sum(int[] arr, int l){
        //递归分成两部分，一个是最基本的问题，其实就是递归的结束条件
        if(l == arr.length)     //最基本的问题
            return 0;

        return arr[l] + sum(arr, l + 1);        //转换成更小的子问题
    }

    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7, 8};
        System.out.println(sum(nums));
    }
}